Manufacturers of electronic consumer devices, such as televisions, radio tuners, digital video disk players, video cassette recorders, set-top cable television boxes, set-top satellite boxes, etc., typically supply a remote control along with each electronic consumer device. The remote control can control the associated electronic consumer device by sending an operational signal with a key code to the electronic consumer device. Each such key code corresponds to a function of the selected electronic consumer device, such as power on, volume down, play, stop, select, channel advance, channel back, etc. Thus, a electronic device is controlled by a codeset of key codes.
Codesets can differ from each other not only by the bit patterns assigned to the key codes, but also by the timing, modulation and framing protocols used to modulate the bit patterns onto operational signals. In order to avoid the situation where a signal containing a key code operates an electronic device that is not selected, manufacturers of electronic consumer devices may use different codesets for different devices. Although each model of electronic device might not have a unique codeset, there are nevertheless thousands of codesets used to operate the various types, brands and models of electronic consumer devices sold in the world market today.
Microcontrollers in remote controls are typically supplied to remote control manufacturers preloaded with codesets that operate the various types, brands and models of electronic devices that the remote control is to operate. It is therefore of significant value to a microcontroller manufacturer to be able to supply the appropriate codesets needed for each possible remote control application. A microcontroller manufacturer that has the codesets needed for a particular remote control application has a competitive advantage over another microcontroller manufacturer that does not have the needed codeset. Microcontroller manufacturers therefore devote great effort and expense amassing a large and comprehensive databases of codesets. These codeset databases are valuable to the microcontroller manufacturers. Microcontroller manufacturers therefore attempt to keep their codeset databases proprietary.
Not only does knowledge of codesets constitute a competitive advantage to a microcontroller manufacturer, but knowledge of codesets is also of value to remote control manufacturers and providers of codeset database services. An unscrupulous remote control manufacturer has an incentive to purchase microcontrollers cheaply without preloaded codesets, and then to load copied codesets that were assembled and compiled by a microcontroller manufacturer. In this way the remote control manufacturer can avoid paying for the collection costs borne by the microcontroller manufacturer. In a similar fashion, a provider of codeset database services also has an incentive to provide services using copied codesets that were assembled and compiled by a microcontroller manufacturer.
A microcontroller manufacturer may wish to allow its microcontrollers to be loaded with a codeset after the remote control containing the microcontroller has been shipped. This can involve transmitting a newly available codeset over a telephone cable or a cable TV line to a consumer. Using various programming aids, the consumer receives the transmitted codeset and loads it into the remote control microcontroller. Although the codesets that a consumer loads onto a commercially available universal remote control can be vulnerable to copying, it is relatively time consuming and costly to copy a large number of codesets, for example, thousands, using the programming aids typically made available to consumers.
A microcontroller manufacturer may also wish to allow remote control developers to have access to a large number of codesets so that the remote control developers can develop new models of remote controls that contain the manufacturer's microcontroller. Currently a developer who wants to develop microcontroller software for a new model of remote control first writes a “software functional specification” that describes the desired functionality of the new remote control. The software functional specification is a document that is sent to the microcontroller manufacturer. The microcontroller manufacturer uses the software functional specification to select the required codesets from the manufacturer's database of codesets. The manufacturer then writes microcontroller software that performs the functions specified in the software functional specification. The resulting software is then sent to the developer, who tests the software in the developer's test system. If the developer finds a deficiency in the software, then the microcontroller manufacturer typically debugs the software until the developer is satisfied. This is a time consuming process. Microcontroller manufacturers typically want to limit the amount of their own resources devoted to developing software for remote control developers, especially developers who purchase only low volumes of microcontrollers.
Microcontroller manufacturers could reduce the amount of their resources devoted to developing software for remote control developers by providing the developers access to the manufacturer's database of codesets. Providing such access to developers, however, might provide an opportunity for an unscrupulous seller of remote controls or an unscrupulous provider of codeset database services to copy a large number of codesets with minimum effort.
A solution is therefore desired that allows remote control developers to download codesets from a database of codesets and to use the downloaded codesets for authorized purposes, but that at the same time prevents an unscrupulous remote control seller or codeset database service provider from copying a large number of codesets from the database of codesets.